package com.ob.api.limit;

import java.lang.annotation.*;

/**
 * 限流注解
 *
 * @author xzzz
 */
@Documented
@Inherited
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface RateLimiter {

    /**
     * 限流时间 (秒)
     */
    int time() default 1;

    /**
     * 单位时间(time)最大请求数 (QPS)
     */
    int qps() default 5;

    /**
     * 限流类型
     * IP  : 对该接口的IP进行限流,漏桶方式
     * API : 对该接口全部请求进行限流,令牌桶方式
     */
    String type () default "IP";

    /**
     * 快速失败,预留,暂未实现
     * 为false则阻塞
     */
    boolean failFast () default true;
}
